#include <iostream>
#include "ShareMemory.hpp"
#include "time.hpp"
#include <string.h>
#include "fifo.hpp"

int main()
{
    std::cout << "time: " << GetCurTime() << std::endl;
    shm.CreateShm();
    shm.AttachShm();

    gpipe.OpenPipeForRead();
    // 在这里进行IPC -- > 读数据
    struct data *image = (struct data*)shm.Getaddr();
    //std::cout << shm.Getaddr() << " " << shm.Getshmid() <<" " << shm.Getkey() << " " <<std::endl;
    while(true)
    {
        gpipe.Wait();
        printf("status: %s\n",image->status);
        printf("lasttime: %s\n",image->lasttime);
        printf("image: %s\n",image->image);
        strcpy(image->status,"过期");

    }
    shm.DetachShm();
    shm.DeleteShm();

    return 0;
}












// int main()
// {
//     key_t key = ftok(gpath.c_str(),gprojID);
//     //1.创建Key
//     if(key < 0)
//     {
//         std::cerr << "ftok error" << std::endl;
//         return 1;
//     }
//     std::cout << "k: " << ToHex(key) << std::endl;
    
//     //2.创建共享内存 && 获取
//     // 注意
//     int shmid = ::shmget(key,gshmsize, IPC_CREAT | IPC_EXCL | gmod);
//     if(shmid < 0)
//     {
//         std::cerr << "shmget error" << std::endl;
//     }
//     std::cout << "shmid: " << shmid << std::endl;

//     sleep(5);

//     //3. 共享内存挂接到自己的地址空间中
//     void* ret = shmat(shmid,nullptr,0); // 为什么会失败？？
//     std::cout << "attach done" << (long long) ret << std::endl;
//     sleep(5);

//     // 在这里进行通信！
//     // ...


//     //去关联
//     ::shmdt(ret);
//     std::cout << "detach done" << std::endl;

//     //n.删除共享内存
//     shmctl(shmid, IPC_RMID, nullptr);
//     sleep(5);
//     return 0;
// }